/**
 * Project Name:dsrs-systemservice-service
 * File Name:DatadictService.java
 * Package Name:com.bwda.dsrs.systemservice.service;
 * Date:2019年4月28日
 * Copyright (c) 2019, 江苏保旺达软件有限公司 All Rights Reserved.
 */
package com.bwda.dsrs.systemservice.service;

import com.bwda.dsrs.systemservice.domain.exception.SystemServiceException;
import com.bwda.dsrs.systemservice.domain.po.datadict.DatadictPo;
import com.bwda.dsrs.systemservice.domain.condition.datadict.DatadictCondition;

import java.util.List;

/**
 * 数据字典
 *
 * @author liangjianyong
 * @date 2019/4/8
 */
public interface DatadictService extends BaseService<DatadictPo, DatadictCondition> {
    
    /**
     * 根据code查询数据字典值
     * 
     * @param dataDictCode
     * @return
     * @throws SystemServiceException
     */
    String getDataDictValByCode(String dataDictCode) throws SystemServiceException;

    /**
     * 根据typecode查询数据字典值
     *
     * @param dataDictTypeCode
     * @return
     * @throws SystemServiceException
     */
    List<DatadictPo> getDataDictValByTypeCode(String dataDictTypeCode) throws SystemServiceException;
    
    /**
     * 批量新增
     * 
     * @param datas
     */
    void insertBatch(List<DatadictPo> datas);
    
    /**
     * 根据类型code 查询未删除且正常的字典列表
     * 
     * @param typeCode 根据类型code查询字典列表
     * @return
     */
    List<DatadictPo> selectValidListByListCode(String typeCode);
    
    /**
     * 查询数量（返回带dataDicTypeName）
     * 
     * @param condition 可以根据类型名称模糊查询
     * @return
     */
    int queryCountWithTypeName(DatadictCondition condition);
    
    /**
     * 查询（返回带dataDicTypeName）
     * 
     * @param condition 可以根据类型名称模糊查询
     * @return
     */
    List<DatadictPo> queryListWithTypeName(DatadictCondition condition);

    /**
     * 批量删除
     * @param idList
     */
    void batchDelete(List<Integer> idList);

    /**
     * 批量删除
     * @param datadicTypeCodeList
     */
    void batchDeleteByTypeCodeList(List<String> datadicTypeCodeList);

    /**
     * 禁用此类型下所有数据
     * @param datadicTypeCode
     */
    void updateStatusByTypeCode(String datadicTypeCode);

    /**
     * 查询当前排序的最大值
     * @return
     */
    Integer selectMaxOrderNum();

    /**
     * 根据类型查询有无数据
     * @param datadicTypeCode
     * @return
     */
    int selectCountByType(String datadicTypeCode);

}